//#include<iostream>
//#include<vector>
//#include<cmath>
//#include<unordered_map>
//#include<string>
//#include<cstdio>
//#include<cstdlib>
//#include<set>
//#include<algorithm>
//using namespace std;
//unordered_map<char, int> u;
//string fun(string a, int b, int d) {
//	int s=0;
//	for (int i = a.length() - 1; i >= 0; i--) {
//		s = (a[i] - '0')*b + d;
//		d = s / 10;
//		a[i] = char('0' + s % 10);
//	}
//	while (d > 0) {
//		a = char('0' + d%10) + a;
//		d /= 10;
//	}
//	return a;
//}
//string fun(string s,int k) {
//	string r="0";
//	for (int i=0;i<s.length();i++) 
//		r = fun(r, k, u[s[i]]);
//	return r;
//}
//int main() {
//	cin.tie(NULL);
//	ios::sync_with_stdio(false);
//	char ch;
//	for (int i = 0; i < 16; i++) {
//		ch = i < 10 ? 48 + i : 55 + i;
//		u[ch] = i;
//	}
//	int n,k;
//	cin >> n;
//	string s;
//	for (int i = 0; i < n; i++) {
//		cin >> k >> s;
//		cout << fun(s,k) << endl;
//	}
//	return 0;
//}
#include <iostream>
#include <string>
#include <cmath>
#include <cassert>
#include<unordered_map>
using namespace std;
unordered_map<char, int> digitMap;
int convertToDecimal(int base, const string& numStr) {
    int decimalValue = 0;
    int length = numStr.length();
    for (int i = 0; i < length; ++i) {
        char ch = numStr[length - 1 - i];
        int digit = digitMap[ch];
        decimalValue += digit * pow(base, i);
    }
    return decimalValue;
}

int main() {
    int N;
    cin >> N;
    char ch;
    for (int i = 0; i < 16; i++) {
        ch = i < 10 ? 48 + i : 55 + i;
        digitMap[ch] = i;
    }
    while (N--) {
        int K;
        string numStr;
        cin >> K >> numStr;
        int decimalValue = convertToDecimal(K, numStr);
        cout << decimalValue << endl;
    }
    return 0;
}